package com.schoolcloud.serve.mq.producer;

import com.schoolcloud.common.model.NotificationRequest;
import com.schoolcloud.serve.config.RabbitMQConfig;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.MessageDeliveryMode;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Component;

@Component
@RequiredArgsConstructor
@Slf4j
public class NotificationProducer {

    private final RabbitTemplate rabbitTemplate;
    /**
     * 发送通知消息到RabbitMQ
     * @param request 通知请求实体
     */
    public void sendNotification(NotificationRequest request) {
        try {
            // 路由键使用通知类型（如"follow"、"finder_claim"）
            String routingKey ="notification.store.queue";
            // 发送消息到交换机
            rabbitTemplate.convertAndSend(
                    RabbitMQConfig.FRONT_NOTIFICATION_EXCHANGE,
                    routingKey,
                    request,  // 消息体（会被自动序列化）
                    message -> {
                        // 可选：设置消息持久化（防止RabbitMQ重启丢失）
                        message.getMessageProperties().setDeliveryMode(MessageDeliveryMode.PERSISTENT);
                        return message;
                    }
            );
        } catch (Exception e) {
            // 处理发送失败（如记录日志、重试）
            log.error("发送通知消息失败: {}", request, e);
        }
    }

}
